<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script src="https://code.jquery.com/jquery-3.7.1.js"></script>
    <script>
        // ECMAscript 6新特性练习
        // var syb = Symbol(123)
        // var obj = {
        //     name: '11',
        //     age: 112,
        //     [syb]: '1111'
        // }
        // console.log(obj[syb]);  //获取键值
        // console.log(syb.description); //获取symble小括号里的值
        // Reflect.ownKeys(obj).forEach((item) => {
        //     console.log(item); //键名
        //     console.log(obj[item]); //键值
        // })
        //迭代器：从一个数据集合中按照顺序不断取数据的过程
        // 可以被for of 循环的都能被迭代

        //基本语法
        // new Promise((a, b) => {
        //     a()
        // }).then(v => {
        //     console.log(v);
        // }).catch(e => {
        //     console.log(e);
        // })
        // new Promise((a, b) => {
        //     a()
        // }).then(v => {
        //     console.log(v);
        // }).catch(e => {
        //     console.log(e);
        // })
        // new Promise((a, b) => {
        //     a()
        // }).then(v => {
        //     console.log(v);
        // }).catch(e => {
        //     console.log(e);
        // })
        //封装网络请求
        // new Promise((res, ret) => {
        //     $.ajax({
        //         type: 'get',
        //         url: 'https://liu.zzgoodqc.cn/goodsx/goodslist',
        //         data: '',
        //         dataType: 'json',
        //         // success: res('成功'),
        //         success: (a) => {
        //             var c = a.data
        //             res(c)
        //         },
        //         // error: ret('失败'),
        //         error: (e) => {
        //             ret(e)
        //         }
        //     })
        // }).then((val) => {
        //     console.log(val);
        // }).catch(e => {
        //     console.log(e);
        // })
        //封装网络请求
        // new Promise((res, ret) => {
        //     $.ajax({
        //         type: 'get',
        //         url: 'https://liu.zzgoodqc.cn/goodsx/goodslist',
        //         data: '',
        //         dataType: 'json',
        //         // success: res('成功'),
        //         success: (a) => {
        //             var c = a.data
        //             res(c)
        //         },
        //         // error: ret('失败'),
        //         error: (e) => {
        //             ret(e)
        //         }
        //     })
        // }).then((val) => {
        //     console.log(val);
        // }).catch(e => {
        //     console.log(e);
        // })
        // 变量
        // var      变量     全局作用域    可以从新赋值  可以重复声明   可以变量提升
        // let      变量     块级作用域    可以重新赋值  不可重复声明   不能变量提升
        // const    常量     块级作用域    不能重新赋值   不能重复声明  不能变量提升   需要赋初始值
        // 变量解构赋值
        // 数组
        // var arr = [1, 2, 3, [123, 22]]
        // var [a, b, c, d] = arr   //a=arr[0],b=arr[1],c=arr[2],d=arr[3]
        // //对象
        // var obj = {
        //     name: 11,
        //     age: 22,
        // }
        // var { name, age } = obj  //大括号内的参数要和对象中的属性名一致
        // //模板字符串
        // var a = 123
        // console.log(`这个数字是：${a}`);
        // 简化对象写法
        // var name = '小刘'
        // var age = 11
        // var obj = {
        //     name,
        //     age,
        // }
        // console.log(obj);    //变量名和属性名一致可以只写一个
        //迭代器
        // var arr = [1, 2, 3]
        // var iter = arr[Symbol.iterator]()
        // console.log(iter.next());
        // 生成器
        // function* fn() {
        //     console.log(111);
        //     yield 22
        //     console.log(222);
        //     yield 11
        //     console.log(333);
        //     yield
        // }
        // var iter = fn()
        // console.log(iter.next());
        // console.log(iter.next());
        // console.log(iter.next());
        //set:一个集合，类似数组，成员的值都是唯一的
        //声明set
        // var set = new Set([1, 2, 6, 1, 2, 3])
        // console.log(set);
        // var arr = [1, 2, 3, 4, 1, 2, 3, 4, 4, 4,]
        // var set = new Set(arr)
        // console.log([...set]);
        //方法
        // console.log(set.size);
        // set.add(5)
        // console.log(set);
        // set.delete(1)
        // console.log(set);
        // console.log(set.has(5));
        // set.clear()
        // console.log(set);
        // console.log([...set]);
        // console.log([...set, ...set]);
        //声明set
        // var set = new Set([1, 2, 6, 1, 2, 3])
        // console.log(set);
        // var arr = [1, 2, 3, 4, 1, 2, 3, 4, 4, 4,]
        // var set = new Set(arr)
        // console.log([...set]);
        //方法
        // console.log(set.size);
        // set.add(5)
        // console.log(set);
        // set.delete(1)
        // console.log(set);
        // console.log(set.has(5));
        // set.clear()
        // console.log(set);
        // console.log([...set]);
        // console.log([...set, ...set]);
        //map
        // let mp1 = new Map([
        //     ['name', '小王'],
        //     [111, 222],
        // ])
        // console.log(mp1);
        // mp1.size()
        // mp1.set('111', '999')
        // mp1.get('name')
        // console.log(mp1.has('小王'));
        // mp1.clear()
        //map
        // let mp1 = new Map([
        //     ['name', '小王'],
        //     [111, 222],
        // ])
        // console.log(mp1);
        // mp1.size()
        // mp1.set('111', '999')
        // mp1.get('name')
        // console.log(mp1.has('小王'));
        // mp1.clear()
        // 箭头函数
        // var a = () => { }
        // 1.使用箭头声明的函数叫箭头函数
        // 2.箭头函数没有this指向
        // 3.箭头函数不能使用arguments
        // 4.当形参只有一个时可以省略小括号
        // 5.当代码块只有一行代码时可以省略大括号和return
        //结构赋值
        // var arr = [1, 2, 3]
        // var [a, b, c] = arr
        // var obj = {
        //     name: 'qwe',
        //     age: 11,
        // }
        // var { name, age } = obj
        // var arr = [1, 2, 3]
        // var [a, b, c] = arr
        // var obj = {
        //     name: 'qwe',
        //     age: 11,
        // }
        // var { name, age } = obj
    </script>
</body>

</html>